Code
## need cleaning
socio_demo_dta |>
mutate(degree = str_remove_all(degree, "[0-9]|-")) |>
mutate(degree = str_trim(degree, side = "both")) |>
count(degree, sort = T) |>
View()## need cleaning
socio_demo_dta |>
mutate(degree = str_remove_all(degree, "[0-9]|-")) |>
mutate(degree = str_trim(degree, side = "both")) |>
count(degree, sort = T) |>
View()Respondents see rage-bait as emotionally powerful and stress-inducing, especially when severe, but many also claim resilience or neutrality, reflecting a tension between vulnerability and critical resistance.
The strongest consensus was on the statement βIt is easy for users to become angry without knowing the full storyβ β over 80% agreed, showing that respondents recognize how manipulative and emotionally triggering rage-bait can be.
About two-thirds agreed that emotions rise depending on the gravity of rage-bait posts, highlighting that the severity of content directly influences emotional impact.
Just over half agreed that rage-bait makes social media stressful, while a large neutral group (32%) suggests variability in how strongly stress is felt.
Around 40% disagreed with βI believe posts that are emotional rather than factualβ, showing that many respondents are critical of emotionally manipulative content, though neutrality (32%) indicates some ambivalence.
plt_affective_fct <- plt_rage_fct("Affective")
## saving plot
ggsave(
plot = plt_affective_fct,
filename = "plot/fct_affective.jpg",
unit = "in",
width = 11,
height = 6,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_affective.jpg")Critical Evaluation is characterized by strong consensus on fact-checking and contextual reading, clear recognition of manipulation, but mixed attitudes toward judging credibility by author background. This shows respondents value rational evaluation but remain divided on how to apply it in practice.
An overwhelming majority (93% Agree/Strongly Agree) believe provocative posts should be fact-checked rather than reacted to emotionally, showing a strong preference for rational evaluation over impulsive responses.
Similarly, 95% Agree/Strongly Agree that users should be reminded to read more context before reacting, highlighting a widespread recognition of the importance of contextual understanding in digital literacy.
A large majority (93% Agree/Strongly Agree) acknowledge that others often fail to recognize emotional manipulation online, suggesting strong awareness of how rage-bait exploits emotional triggers.
Responses were more divided on judging provocative posts based on authorβs background β 32% Agree/Strongly Agree, 43% Neutral, and 26% Disagree/Strongly Disagree. This indicates uncertainty or ambivalence about whether credibility should be judged based on the authorβs identity rather than content itself.
plt_critical_eval_fct <- plt_rage_fct("Critical")
## saving plot
ggsave(
plot = plt_critical_eval_fct,
filename = "plot/fct_critical_eval.jpg",
unit = "in",
width = 11,
height = 5,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_critical_eval.jpg")Respondents see rage-bait as highly damaging across multiple dimensions β reputational, emotional, mental health, social cohesion, and community toxicity. The strongest consensus lies in its destructive and divisive nature.
Over 90% of respondents agreed that rage-baiting can intentionally ruin or destroy reputations, showing strong consensus that reputational harm is a major risk.
Around 91% agreed that rage-bait emotionally harms people, and another 91% agreed it can take a toll on mental health. This highlights the dual psychological risks of rage-bait content.
Roughly 88% agreed rage-bait posts divide rather than foster shared understanding, and 90% agreed people disrespect others when engaged in rage-bait discussions. This highlights its polarizing and hostile effects on online communities.
About 91% agreed that online spaces have become more toxic due to rage-bait, pointing to its broader societal impact beyond individual harm.
plt_perceived_risk_fct <- plt_rage_fct("Perceived Risk")
## saving plot
ggsave(
plot = plt_perceived_risk_fct,
filename = "plot/fct_perceived_risk.jpg",
unit = "in",
width = 11,
height = 7,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_perceived_risk.jpg")Respondents clearly see rage-bait amplification as algorithmically driven and engagement-fueled, with controversial content outperforming positive posts. While vloggers are seen as contributors, the strongest consensus lies in the role of user engagement and platform visibility metrics.
Nearly 80% agreed that rage-bait spreads through usersβ active engagement, showing strong awareness that clicks, shares, and comments fuel its visibility.
Over 80% agreed that controversial posts become more visible in engagement metrics, highlighting how platform algorithms reward divisive content.
About 71% agreed that rage-bait receives more engagement than positive posts, reinforcing the perception that negativity drives interaction more than constructive content.
Around 63% agreed vloggers help spread rage-bait, but 31% remained neutral. This suggests recognition of influencer involvement, though respondents are less certain compared to other amplification mechanisms.
plt_rb_amplication_fct <- plt_rage_fct("Bait Amplication")
## saving plot
ggsave(
plot = plt_rb_amplication_fct,
filename = "plot/fct_rb_amplication.jpg",
unit = "in",
width = 11,
height = 5,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_amplication.jpg")Respondents are highly confident in recognizing personality attacks and provocative intent as rage-bait cues, and moderately confident about aggressive imagery. However, stylistic signals like red text or bold/caps are not reliable markers in the eyes of users, with most respondents remaining neutral or divided.
83% (Agree + Strongly Agree) identified attacks on othersβ personalities as rage-bait. This is the most confidently recognized signal, showing that respondents clearly associate personal attacks with manipulative content.
68% (Agree + Strongly Agree) saw aggressive images as intended to trigger, while 30% were neutral and only 2% disagreed. This indicates strong recognition, though a sizable neutral group suggests some uncertainty about visual cues.
88% (Agree + Strongly Agree) said they can easily recognize posts meant to provoke anger, with only 11% neutral and 1% disagreeing. This shows high confidence in spotting provocation cues, making it one of the most strongly endorsed indicators.
For bold/caps, 35% agreed, but 44% were neutral and 21% disagreed. For red text/graphics, only 26% agreed, while 53% were neutral and 21% disagreed. These stylistic features are not consistently perceived as rage-bait cues, reflecting low recognition compared to content-based signals.
plt_rb_cue_recognition_fct <- plt_rage_fct("Cue Recognition")
## saving plot
ggsave(
plot = plt_rb_cue_recognition_fct,
filename = "plot/fct_rb_cue_recognition.jpg",
unit = "in",
width = 11,
height = 6,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_cue_recognition.jpg")Respondents show high awareness of rage-bait as attention-seeking and mostly avoid actively amplifying it. However, passive engagement is widespread β reading comments, observing heated arguments, or occasionally reacting when personally invested. The data reveals a tension: low active contribution but high passive consumption, which still sustains rage-baitβs visibility and impact.
While many avoid aggressive defense, a notable minority still engage in heated exchanges when provoked. 23% (Strongly Disagree) + 34% (Disagree) avoid defending opinions aggressively. Yet 13% (Agree + Strongly Agree) admitted to doing so, with 32% neutral.
Respondents clearly recognize rage-bait as a deliberate tactic for visibility.90% (Agree + Strongly Agree) believe others use rage-bait to gain attention online.
Engagement is situational β some share when personally affected, but many resist. About 33% (Agree + Strongly Agree) admitted to reacting/sharing rage-bait when they relate to the issue. Meanwhile, 41% (Disagree + Strongly Disagree) resisted, and 27% were neutral.
Passive consumption (comment reading) is a dominant form of engagement, even among those who donβt actively post. A strong majority (72% Agree + Strongly Agree) said they read comments when curious about rage posts. Only 5% disagreed, while 22% were neutral.
40% (Agree + Strongly Agree) enjoy reading heated arguments, while 30% disagreed and 31% were neutral. A significant portion finds entertainment in conflict, though others remain disengaged or indifferent.
Most respondents avoid being direct amplifiers of rage-bait. Only 9% (Agree + Strongly Agree) admitted to contributing by sharing rage-bait posts. In contrast, 77% (Disagree + Strongly Disagree) rejected this behavior, with 14% neutral.
plt_rb_engagement_fct <- plt_rage_fct("Engagement")
## saving plot
ggsave(
plot = plt_rb_engagement_fct,
filename = "plot/fct_rb_engagement.jpg",
unit = "in",
width = 11,
height = 6,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_engagement.jpg")Respondents demonstrate high levels of selfβregulation when faced with rageβbait. They scroll past and ignore content to minimize its impact. Most importantly, they avoid replying to prevent conflict, which is the most strongly endorsed behavior. This indicates that while rageβbait is recognized as harmful, users actively employ avoidance strategies to maintain control and reduce emotional or social fallout.
Most respondents practice passive avoidance, choosing not to engage directly. 75% (Agree + Strongly Agree) said they usually scroll past rageβbait posts without reacting. Only 8% disagreed, while 18% were neutral.
Ignoring is a deliberate selfβregulation strategy to protect emotional wellβbeing. 72% (Agree + Strongly Agree) reported ignoring rageβbait content to avoid being influenced. Again, only 8% disagreed, with 21% neutral.
Conflict avoidance is the most consistently endorsed form of selfβregulation, showing strong consensus. 88% (Agree + Strongly Agree) avoid replying to provocative posts to prevent conflict. Just 12% were neutral, and none disagreed.
plt_rb_avoidance_fct <- plt_rage_fct("Avoidance")
## saving plot
ggsave(
plot = plt_rb_avoidance_fct,
filename = "plot/fct_rb_avoidance.jpg",
unit = "in",
width = 11,
height = 4,
dpi = 400
)
## diplay plot
knitr::include_graphics("plot/fct_rb_avoidance.jpg")## parallel analysis
fa.parallel(fct_likert_dta, fa = "fa")Parallel analysis suggests that the number of factors = 4 and the number of components = NA
# 7 factors
## elinating items
fa_rage_bait <-
fac(
r = fct_likert_dta,
nfactors = 7,
rotate = "varimax"
)
## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.36)
Loadings:
MR1 MR6 MR3 MR4 MR5 MR2 MR7
ce3 0.614
ce4 0.605
as5 0.544 0.435
pr1 0.686
pr2 0.833
pr3 0.740
pr4 0.724
pr5 0.716
pr6 0.701
pr7 0.686
rcr5 0.617
rba2 0.603
rba3 0.583
rba4 0.539
ce1 0.642
sr1 0.833
sr2 0.665
sr3 0.598
are1 -0.523 0.405
as3 0.522
rcr2 0.523
rcr4 0.754
as1 0.700
rba1 0.685
rcr1 0.468
rcr3 0.418
ce2 0.463
as2 0.456
as4 0.495
are2 0.414
are3 0.407
are4 -0.361
are5 -0.452
are6 0.427
MR1 MR6 MR3 MR4 MR5 MR2 MR7
SS loadings 5.977 3.341 2.662 1.370 1.306 1.141 1.003
Proportion Var 0.176 0.098 0.078 0.040 0.038 0.034 0.029
Cumulative Var 0.176 0.274 0.352 0.393 0.431 0.465 0.494
# 5 factors
## elinating items
fct_likert_rm_dta <-
fct_likert_dta |>
select(-starts_with("ce"), -pr6, -pr7, -as1, -as4, -as5, -rcr3, -rba1, -are5)
fa_rage_bait <-
fac(
r = fct_likert_rm_dta,
nfactors = 5,
rotate = "varimax"
)
## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.36)
Loadings:
MR1 MR3 MR2 MR4 MR5
pr1 0.646
pr2 0.839
pr3 0.850
pr4 0.726
pr5 0.643
rcr5 0.544
rba2 0.624
rba3 0.614
rba4 0.644
are2 0.512
sr1 0.796
sr2 0.685
sr3 0.594
rcr2 0.548
rcr4 0.796
as2 0.639
as3 0.523
rcr1 0.497
are1 -0.487
are3 0.361
are4
are6 0.424
MR1 MR3 MR2 MR4 MR5
SS loadings 3.247 2.735 2.064 1.069 0.950
Proportion Var 0.148 0.124 0.094 0.049 0.043
Cumulative Var 0.148 0.272 0.366 0.414 0.458
# 4 factors
## elinating items
fct_likert_rm_dta <-
fct_likert_dta |>
select(-as5, -are1, -are2, -are3, -are4, -are5, -are6, -rcr1, -rcr2, -rcr3, -rcr4, -pr6, -pr7, -rba1, -as1, -pr1, -pr3)
fa_rage_bait <-
fac(
r = fct_likert_rm_dta,
nfactors = 4,
rotate = "varimax"
)
## printing factor loadings
print(fa_rage_bait$loadings, sort = TRUE, cutoff = 0.46)
Loadings:
MR1 MR3 MR2 MR4
ce2 0.571
ce3 0.736
ce4 0.729
pr2 0.697
pr4 0.634
pr5 0.614
rcr5 0.612
rba2 0.647
rba3 0.587
rba4 0.567
ce1 0.616
sr1 0.821
sr2 0.631
sr3 0.679
as3 0.570
as4 0.550
as2 0.479
MR1 MR3 MR2 MR4
SS loadings 2.975 2.081 1.777 1.229
Proportion Var 0.175 0.122 0.105 0.072
Cumulative Var 0.175 0.297 0.402 0.474
# Define measurement model (outer model)
measurement_model <- constructs(
composite("Risk Awareness",
multi_items(c(rep("ce", 3), rep("pr", 3)), c(2:4, c(2, 4, 5)))),
composite("Rage Bait Recognition",
multi_items(c("rcr", rep("rba", 3), "ce"), c(5, 2:4, 1))),
composite("Avoidance Behavior", multi_items("sr", 1:3)),
composite("Affective Susceptibility", multi_items("as", 2:4))
)
# Define structural model (inner model)
# Hypothesized paths based on your SEM framework
structural_model <- relationships(
paths(from = "Rage Bait Recognition", to = c("Risk Awareness", "Affective Susceptibility", "Avoidance Behavior")),
paths(from = "Risk Awareness", to = c("Avoidance Behavior", "Affective Susceptibility")),
paths(from = "Affective Susceptibility", to = "Avoidance Behavior")
)
# Estimate the PLS model
pls_model <- estimate_pls(data = fct_likert_rm_dta,
measurement_model = measurement_model,
structural_model = structural_model)
# Summarize results
summary_pls_model <- summary(pls_model)
# plot the path diagram
plot(pls_model)# Run bootstrapping with 1000 resamples
boot_results <- bootstrap_model(pls_model, nboot = 10000, seed = 2026)
plot(boot_results)# Summarize bootstrap results
summary_boot_results <- summary(boot_results)Rage bait recognition β Risk awareness: Students who are better at recognizing rage bait cues and understanding how it spreads are also more likely to critically evaluate and perceive the risks of such content.
Rage bait recognition β Affective susceptibility: Recognition of rage bait does not directly increase emotional vulnerability. In other words, just being able to spot rage bait doesnβt necessarily make students more emotionally reactive or stressed. Emotional susceptibility seems to be shaped more by risk awareness than recognition alone.
Rage bait recognition β Avoidance behavior: Recognition of rage bait does not directly lead to avoidance. Students may recognize rage bait but still engage with it, ignore it, or react differently. Avoidance behavior is influenced more strongly by other factors (risk awareness and emotional susceptibility).
Risk awareness β Affective susceptibility: Students who perceive higher risks (toxicity, harm, reputational damage) are also more emotionally susceptible. Awareness of risks seems to heighten emotional stress and vulnerability, suggesting that critical awareness can have a double edge: it informs but also sensitizes.
Risk awareness β Avoidance behavior: Greater risk awareness encourages avoidance strategies. Students who understand the dangers of rage bait are more likely to scroll past, ignore, or disengage to protect themselves.
Affective susceptibility β Avoidance behavior: Emotional vulnerability also drives avoidance. When students feel stressed or manipulated, they are more likely to regulate themselves by disengaging. This shows that avoidance is partly a coping mechanism for emotional strain.
summary_boot_results$bootstrapped_paths |>
as.data.frame() |>
rownames_to_column("Path") |>
tibble() |>
mutate(across(.cols = is.numeric, ~ round(.x, 3))) |>
DT::datatable()Rage bait recognition β Risk awareness β affective susceptibility: This pathway shows that when students recognize rage bait cues, they become more aware of its risks, and this heightened awareness can make them more emotionally susceptible. In other words, recognition doesnβt directly trigger emotions, but it indirectly increases vulnerability by first raising awareness of harm. The relationship suggests that critical awareness can sensitize students emotionally.
Rage bait recognition β Risk awareness β Avoidance behavior: Recognition of rage bait leads to greater risk awareness, which then encourages avoidance behaviors (scrolling past, ignoring, disengaging). The relationship here is that recognition fosters awareness, and awareness motivates protective action. Even though recognition alone doesnβt drive avoidance, it indirectly does so through the mediating role of risk awareness.
Risk Awareness β Affective Susceptibility β Avoidance Behavior: Students who perceive risks may become more emotionally susceptible, and this emotional strain can then push them toward avoidance. The relationship here is that risk awareness heightens emotional vulnerability, which in turn encourages avoidance as a coping mechanism. This pathway highlights how awareness can indirectly lead to avoidance by first increasing susceptibility.
summary_boot_results$bootstrapped_total_indirect_paths |>
as.data.frame() |>
rownames_to_column("Path") |>
tibble() |>
mutate(across(.cols = is.numeric, ~ round(.x, 3))) |>
DT::datatable()Rage bait recognition construct shows acceptable reliability. Cronbachβs alpha and composite reliability (rhoC) are both above the 0.70 threshold, indicating consistent measurement. The AVE (0.502) is just above 0.50, meaning the indicators explain more than half of the variance in the latent construct. Overall, this factor is reliable.
Risk awareness construct demonstrates strong reliability. Both alpha and rhoC are well above 0.80, showing high internal consistency. The AVE (0.55) exceeds the 0.50 benchmark, confirming good convergent validity.
Affective susceptibility construct is weak in reliability. Cronbachβs alpha and rhoC fall below the recommended 0.70 threshold, and AVE (0.447) is below 0.50, suggesting the items do not capture the construct consistently. This factor may need further refinement.
Avoidance behavior construct shows good reliability. Alpha and rhoC are above 0.70, and AVE (0.664) is well above 0.50, meaning the items strongly represent the latent variable. This is a stable and well-measured construct.
summary_pls_model$reliability |>
as.data.frame() |>
rownames_to_column("Factors") |>
mutate(across(is.numeric, ~ round(.x, 3))) |>
as.tibble() |>
DT::datatable()The diagonal values (0.708, 0.742, 0.668, 0.815) are the square roots of AVE for each construct. The offβdiagonal values are the correlations between constructs. Discriminant validity is established when each diagonal value is greater than the correlations in its row/column.
All four constructs meet the FornellβLarcker criterion: each shares more variance with its own indicators than with other constructs.
Risk Awareness and Affective Susceptibility show the highest correlation (0.314), which is expected since awareness of risks can heighten emotional vulnerability.
Avoidance Behavior is the most distinct construct, with the highest βAVE (0.815) and the lowest correlations.
This confirms the measurement model has good discriminant validity β the constructs are related but not redundant.
summary_pls_model$validity$fl_criteria |>
as.data.frame() |>
rownames_to_column("Factors") |>
mutate(across(is.numeric, ~ round(.x, 3))) |>
as.tibble() |>
DT::datatable()HTMT assesses discriminant validity by examining the ratio of between-construct correlations to within-construct correlations.
Rule of thumb: HTMT values should be below 0.85 (conservative) or below 0.90 (liberal). Values above these thresholds suggest constructs may not be distinct.
All HTMT values are well below 0.85, confirming strong discriminant validity across your four constructs.
The highest relationship is between Recognition and Awareness (0.512), which makes theoretical sense β spotting rage bait often leads to perceiving risks.
Avoidance Behavior is the most distinct construct, with very low HTMT values relative to the others.
Together with the FornellβLarcker results, this shows the measurement model has robust discriminant validity. The constructs are related but not overlapping excessively.
summary_pls_model$validity$htmt |>
as.data.frame() |>
rownames_to_column("Factors") |>
mutate(across(is.numeric, ~ round(.x, 3))) |>
as.tibble() |>
DT::datatable()
1.2 Social Media
1.2.1 Platform
Female students are more active across diverse platforms, while male students concentrate usage on fewer platforms.
Females reported higher usage across nearly all platforms, with Facebook, TikTok, and Instagram as their top three.
Males also favored Facebook, but their engagement was lower overall, with Instagram and TikTok following.
Code
1.2.2 Social media content engagement by gender
Gender differences highlight that females lean toward lifestyle and advocacy, while males gravitate more toward gaming and politics.
Females engaged most with entertainment, music, and lifestyle content, followed by news and educational posts.
Males showed similar interest in entertainment and music but had stronger engagement with gaming content compared to females.
Code
1.2.3 Social media content engagement by platform
Regardless of platform, students prioritize light, entertaining, and lifestyle-driven content, with serious topics less dominant.
Across platforms (Facebook, Instagram, TikTok, YouTube), entertainment, music, and lifestyle consistently ranked highest.
Educational and news content also attracted significant engagement, while politics and gaming were lower overall.
Code
1.2.4 Daily time spent on social media by platform
Heavy usage patterns suggest social media is deeply embedded in daily routines, with some platforms fostering extended engagement.
Majority of students spend 3β6 hours daily on Facebook, Instagram, TikTok, and YouTube.
A notable proportion also reported more than 6 hours, especially on platforms like Reddit, X (Twitter), and Tumblr.
Code
1.2.5 Daily time spent on social media by platform
Male students demonstrate more extreme usage, while female students cluster around moderate-to-high daily engagement
Females most often reported 3β6 hours daily, with fewer exceeding 6 hours.
Males were more likely to report over 6 hours of use, showing heavier overall consumption.
Code